﻿ 
namespace Core.Items.Modules
{
    /*

		MetaGroup                      = Weapons
		Group                          = WeaponTunings
		ModuleClass                    = WeaponStabilizers
		Module                         = kobel 450-tz weapon stabilizer
		CpuUsage                       = 32.00 TF
		ReactorUsage                   = 18.00 RP
		Type                           = Passive
		Slot                           = Legs
		TechnologicalLevel             = T2
		Mass                           = 450.00 kg
		PackedVolume                   = 0.50 U
		Volume                         = 1.00 U
		DemobilizerResistance          = -5.00 %
		HitDispersion                  = -10.00 %
		ExplosionSize                  = -10.00 %
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;
    
    /// <summary>
    /// Kobel 450-TZ weapon stabilizer module class
    /// </summary>
    /// <remarks>File generated on 31/10/2011 16:00:57</remarks>
    public sealed class Kobel450TzWeaponStabilizer : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="Kobel450TzWeaponStabilizer"/> class.
        /// </summary>
        public Kobel450TzWeaponStabilizer()
            : base(
            "Kobel 450-TZ weapon stabilizer",
            "",
            ModuleMetaGroupsEnum.Weapons,
            ModuleGroupsEnum.WeaponTunings,
            TechnologyLevelsEnum.Level2,
            SizesEnum.Small,
            new LazyFeature[] { 
				new LazyFeature(typeof(CpuUsage<double>),32.00),
				new LazyFeature(typeof(ReactorUsage<double>),18.00),
				new LazyFeature(typeof(ModuleMass<double>),450.00), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 450.00 ){ IsVisible = false },
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.DemobilizerResistance, -0.05 ){ Unit = UnitsEnum.Percentage, DisplayName ="Demobilizer resistance" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallMagneticWeaponHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Small Magnetic weapon hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumMagneticWeaponHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Medium Magnetic weapon hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallFirearmHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Small Firearm hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumFirearmHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Medium Firearm hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallLaserHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Small Laser hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumLaserHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Medium Laser hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.SmallMissileLauncherHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Small Missile hit dispersion" },
				new Modifier( FeatureTypesEnum.Module, FeaturesEnum.MediumMissileLauncherHitDispersion, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Medium Missile hit dispersion" },
                new Modifier( FeatureTypesEnum.Ammo, FeaturesEnum.AmmunitionExplosionSize, -0.1 ){ Unit = UnitsEnum.Percentage, DisplayName ="Explosion size" }, } )
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Passive; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Legs; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Modules; }
        }
    }
}